package br.com.projetosivan.dao.impl;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.projetosivan.dao.UsuarioDao;
import br.com.projetosivan.model.Usuario;
import br.com.projetosivan.util.HibernateUtil;

public class UsuarioDaoImp implements UsuarioDao {

    public void save(Usuario item) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(item);
        t.commit();
        session.flush();
        session.close();
    }
    public Usuario getUsuario(long id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Usuario usuario = (Usuario) session.load(Usuario.class, id);
        return usuario;
    }
    public List<Usuario> list() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery("from Usuario order by nome").list();
        t.commit();
        session.flush();
        session.close();
        return lista;
    }
    
    public void remove(Usuario item) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(item);
        t.commit();
        session.flush();
        session.close();
    }
    public void update(Usuario item) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(item);
        t.commit();
        session.flush();
        session.close();
    }
	@Override
	public Usuario getUsuarioLogin(String email, String senha) {
		Session session = HibernateUtil.getSessionFactory().openSession();
        Usuario usuario = (Usuario) session.createQuery("from Usuario where email = :email and senha = :senha")
        		.setParameter("email", email).setParameter("senha", senha).uniqueResult();
        return usuario;
	}
}